using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.IO;
using CrystalDecisions.CrystalReports;
using System.Data.SqlClient;

public partial class ReporteCotizaciones : System.Web.UI.Page
{
    ReportDocument reportDoc = new ReportDocument();
    protected void Page_Load(object sender, EventArgs e)
    {
        mostrarReporte();
    }

    protected void ib_reporte_Click(object sender, ImageClickEventArgs e)
    {
        mostrarReporte();
    }

    protected void mostrarReporte()
    {
        try
        {
            String cadena = (String)ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            SqlConnection conexion = new SqlConnection(cadena);
            string consulta = "";
            string concatena = "";
            SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
            int num = 0;


            if (tb_codCotizacionReport.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT DISTINCT Cotizaciones.cod_cotizacion, Cotizaciones.fecha, Proveedores.nro_documento, Proveedores.nombre_empresa, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Personas.nombres, Personas.apellidos, Monedas.descripcion AS Moneda, Detalles_Cotizaciones.nro_renglon, Detalles_Cotizaciones.costo_unitario_gs, Detalles_Cotizaciones.costo_unitario_me, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Productos.nombre, Familias_Productos.iva FROM Cotizaciones  JOIN Detalles_Cotizaciones ON Cotizaciones.cod_cotizacion = Detalles_Cotizaciones.cod_cotizacion JOIN Proveedores ON Cotizaciones.cod_proveedor = Proveedores.cod_proveedor JOIN Productos ON Detalles_Cotizaciones.cod_producto = Productos.cod_producto   JOIN Personas ON Proveedores.nro_documento = Personas.nro_documento  JOIN  Monedas ON Cotizaciones.cod_moneda = Monedas.cod_moneda JOIN  Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto  JOIN  Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN  Marcas ON Marcas.cod_marca = Productos.cod_marca " +
                               " WHERE Cotizaciones.cod_cotizacion = " + tb_codCotizacionReport.Text;
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Cotizaciones.cod_cotizacion = " + tb_codCotizacionReport.Text;
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_empresaReport.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT DISTINCT Cotizaciones.cod_cotizacion, Cotizaciones.fecha, Proveedores.nro_documento, Proveedores.nombre_empresa, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Personas.nombres, Personas.apellidos, Monedas.descripcion AS Moneda, Detalles_Cotizaciones.nro_renglon, Detalles_Cotizaciones.costo_unitario_gs, Detalles_Cotizaciones.costo_unitario_me, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Productos.nombre, Familias_Productos.iva FROM Cotizaciones  JOIN Detalles_Cotizaciones ON Cotizaciones.cod_cotizacion = Detalles_Cotizaciones.cod_cotizacion JOIN Proveedores ON Cotizaciones.cod_proveedor = Proveedores.cod_proveedor JOIN Productos ON Detalles_Cotizaciones.cod_producto = Productos.cod_producto   JOIN Personas ON Proveedores.nro_documento = Personas.nro_documento  JOIN  Monedas ON Cotizaciones.cod_moneda = Monedas.cod_moneda JOIN  Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto  JOIN  Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN  Marcas ON Marcas.cod_marca = Productos.cod_marca " +
                               " WHERE Proveedores.nombre_empresa like '" + tb_empresaReport.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Proveedores.nombre_empresa like '" + tb_empresaReport.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_monedaReport.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT DISTINCT Cotizaciones.cod_cotizacion, Cotizaciones.fecha, Proveedores.nro_documento, Proveedores.nombre_empresa, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Personas.nombres, Personas.apellidos, Monedas.descripcion AS Moneda, Detalles_Cotizaciones.nro_renglon, Detalles_Cotizaciones.costo_unitario_gs, Detalles_Cotizaciones.costo_unitario_me, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Productos.nombre, Familias_Productos.iva FROM Cotizaciones  JOIN Detalles_Cotizaciones ON Cotizaciones.cod_cotizacion = Detalles_Cotizaciones.cod_cotizacion JOIN Proveedores ON Cotizaciones.cod_proveedor = Proveedores.cod_proveedor JOIN Productos ON Detalles_Cotizaciones.cod_producto = Productos.cod_producto   JOIN Personas ON Proveedores.nro_documento = Personas.nro_documento  JOIN  Monedas ON Cotizaciones.cod_moneda = Monedas.cod_moneda JOIN  Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto  JOIN  Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN  Marcas ON Marcas.cod_marca = Productos.cod_marca " +
                               " WHERE Monedas.descripcion like '" + tb_monedaReport.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Monedas.descripcion like '" + tb_monedaReport.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_productoReport.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT DISTINCT Cotizaciones.cod_cotizacion, Cotizaciones.fecha, Proveedores.nro_documento, Proveedores.nombre_empresa, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Personas.nombres, Personas.apellidos, Monedas.descripcion AS Moneda, Detalles_Cotizaciones.nro_renglon, Detalles_Cotizaciones.costo_unitario_gs, Detalles_Cotizaciones.costo_unitario_me, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Productos.nombre, Familias_Productos.iva FROM Cotizaciones  JOIN Detalles_Cotizaciones ON Cotizaciones.cod_cotizacion = Detalles_Cotizaciones.cod_cotizacion JOIN Proveedores ON Cotizaciones.cod_proveedor = Proveedores.cod_proveedor JOIN Productos ON Detalles_Cotizaciones.cod_producto = Productos.cod_producto   JOIN Personas ON Proveedores.nro_documento = Personas.nro_documento  JOIN  Monedas ON Cotizaciones.cod_moneda = Monedas.cod_moneda JOIN  Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto  JOIN  Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN  Marcas ON Marcas.cod_marca = Productos.cod_marca " +
                               " WHERE Productos.nombre like '" + tb_productoReport.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Productos.nombre like '" + tb_productoReport.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_marcaReport.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT DISTINCT Cotizaciones.cod_cotizacion, Cotizaciones.fecha, Proveedores.nro_documento, Proveedores.nombre_empresa, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Personas.nombres, Personas.apellidos, Monedas.descripcion AS Moneda, Detalles_Cotizaciones.nro_renglon, Detalles_Cotizaciones.costo_unitario_gs, Detalles_Cotizaciones.costo_unitario_me, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Productos.nombre, Familias_Productos.iva FROM Cotizaciones  JOIN Detalles_Cotizaciones ON Cotizaciones.cod_cotizacion = Detalles_Cotizaciones.cod_cotizacion JOIN Proveedores ON Cotizaciones.cod_proveedor = Proveedores.cod_proveedor JOIN Productos ON Detalles_Cotizaciones.cod_producto = Productos.cod_producto   JOIN Personas ON Proveedores.nro_documento = Personas.nro_documento  JOIN  Monedas ON Cotizaciones.cod_moneda = Monedas.cod_moneda JOIN  Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto  JOIN  Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN  Marcas ON Marcas.cod_marca = Productos.cod_marca " +
                               " WHERE Marcas.descripcion like '" + tb_marcaReport.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Marcas.descripcion like '" + tb_marcaReport.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_modelo.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT DISTINCT Cotizaciones.cod_cotizacion, Cotizaciones.fecha, Proveedores.nro_documento, Proveedores.nombre_empresa, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Personas.nombres, Personas.apellidos, Monedas.descripcion AS Moneda, Detalles_Cotizaciones.nro_renglon, Detalles_Cotizaciones.costo_unitario_gs, Detalles_Cotizaciones.costo_unitario_me, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Productos.nombre, Familias_Productos.iva FROM Cotizaciones  JOIN Detalles_Cotizaciones ON Cotizaciones.cod_cotizacion = Detalles_Cotizaciones.cod_cotizacion JOIN Proveedores ON Cotizaciones.cod_proveedor = Proveedores.cod_proveedor JOIN Productos ON Detalles_Cotizaciones.cod_producto = Productos.cod_producto   JOIN Personas ON Proveedores.nro_documento = Personas.nro_documento  JOIN  Monedas ON Cotizaciones.cod_moneda = Monedas.cod_moneda JOIN  Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto  JOIN  Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN  Marcas ON Marcas.cod_marca = Productos.cod_marca " +
                               " WHERE Modelo_Productos.descripcion like '" + tb_modelo.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Modelo_Productos.descripcion like '" + tb_modelo.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_codCotizacionReport.Text.Equals("") && tb_empresaReport.Text.Equals("") && tb_monedaReport.Text.Equals("") && tb_modelo.Text.Equals("") && tb_marcaReport.Text.Equals("") && tb_productoReport.Text.Equals(""))
            {
                consulta = "SELECT DISTINCT Cotizaciones.cod_cotizacion, Cotizaciones.fecha, Proveedores.nro_documento, Proveedores.nombre_empresa, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Personas.nombres, Personas.apellidos, Monedas.descripcion AS Moneda, Detalles_Cotizaciones.nro_renglon, Detalles_Cotizaciones.costo_unitario_gs, Detalles_Cotizaciones.costo_unitario_me, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Productos.nombre, Familias_Productos.iva FROM Cotizaciones  JOIN Detalles_Cotizaciones ON Cotizaciones.cod_cotizacion = Detalles_Cotizaciones.cod_cotizacion JOIN Proveedores ON Cotizaciones.cod_proveedor = Proveedores.cod_proveedor JOIN Productos ON Detalles_Cotizaciones.cod_producto = Productos.cod_producto   JOIN Personas ON Proveedores.nro_documento = Personas.nro_documento  JOIN  Monedas ON Cotizaciones.cod_moneda = Monedas.cod_moneda JOIN  Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto  JOIN  Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN  Marcas ON Marcas.cod_marca = Productos.cod_marca ";
                da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
            }
            DataSet DataSet_Cotizaciones = new DataSet();
            da.Fill(DataSet_Cotizaciones, "Cotizacion");
            reportDoc.Load(Server.MapPath("~/Reportes/ReporteCotizaciones.rpt"));
            reportDoc.SetDataSource(DataSet_Cotizaciones.Tables["Cotizacion"]);
            Reporte_Cotizaciones.ReportSource = reportDoc;
            Reporte_Cotizaciones.RefreshReport();
        }
        catch (Exception error)
        {
            error.ToString();
        }
    }
    protected void ib_cancelar_Click(object sender, ImageClickEventArgs e)
    {
        tb_codCotizacionReport.Text = string.Empty;
        tb_empresaReport.Text = string.Empty;
        tb_monedaReport.Text = string.Empty;
        tb_modelo.Text = string.Empty;
        tb_marcaReport.Text = string.Empty;
        tb_productoReport.Text = string.Empty;
        mostrarReporte();
    }
}
